library(tidyverse)
library(data.table)
library(readxl)
library(GGally)
library(leaflet)
library(raster)
library(mltools)
raw_encuesta <- fread("databases/calidad_vida_ok.csv", encoding = "UTF-8") %>%
as_tibble()
# Unificación de las estadísticas de los barrios "ALTAVISTA" y "CABECERA ALTAVISTA"
raw_encuesta <- raw_encuesta %>% mutate(
encuesta_calidad.barrio = case_when(
encuesta_calidad.barrio == "CABECERA ALTAVISTA" ~ "ALTAVISTA",
TRUE ~ encuesta_calidad.barrio
)
)
# One-hot encoding para variable estudio
variables_categoricas <- raw_encuesta[, c("encuesta_calidad.p_45")] %>% mutate(
encuesta_calidad.p_45 = as.factor(encuesta_calidad.p_45)
) %>% rename(
nivel_estudio = encuesta_calidad.p_45
)
variables_categoricas_encoding <- one_hot(as.data.table(variables_categoricas))
raw_encuesta <- data.frame(raw_encuesta, variables_categoricas_encoding)
#Agregación de las variables
db_escolaridad <- raw_encuesta %>%
group_by(encuesta_calidad.barrio) %>%
summarize(edad_promedio = mean(`encuesta_calidad.p_18`, na.rm = TRUE),
proporcion_lectoescritura = sum(`encuesta_calidad.p_35` == 1, na.rm = TRUE) / sum(!is.na(`encuesta_calidad.p_35`), na.rm = TRUE),
proporcion_escolaridad_actual = sum(`encuesta_calidad.p_36` == 1, na.rm = TRUE) / sum(!is.na(`encuesta_calidad.p_36`), na.rm = TRUE),
estudio_ultimo_ano = sum(`encuesta_calidad.p_37` == 1, na.rm = TRUE) / sum(!is.na(`encuesta_calidad.p_37`), na.rm = TRUE),
proporcion_instituciones_publicas = sum(`encuesta_calidad.p_49` == 1, na.rm = TRUE) / sum(!is.na(`encuesta_calidad.p_49`), na.rm = TRUE),
proporcion_nivel_estudio_0 = sum(`nivel_estudio_0` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_0`), na.rm = TRUE),
proporcion_nivel_estudio_1 = sum(`nivel_estudio_1` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_1`), na.rm = TRUE),
proporcion_nivel_estudio_2 = sum(`nivel_estudio_2` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_2`), na.rm = TRUE),
proporcion_nivel_estudio_3 = sum(`nivel_estudio_3` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_3`), na.rm = TRUE),
proporcion_nivel_estudio_4 = sum(`nivel_estudio_4` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_4`), na.rm = TRUE),
proporcion_nivel_estudio_5 = sum(`nivel_estudio_5` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_5`), na.rm = TRUE),
proporcion_nivel_estudio_6 = sum(`nivel_estudio_6` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_6`), na.rm = TRUE),
proporcion_nivel_estudio_7 = sum(`nivel_estudio_7` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_7`), na.rm = TRUE),
proporcion_nivel_estudio_8 = sum(`nivel_estudio_8` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_8`), na.rm = TRUE),
proporcion_nivel_estudio_9 = sum(`nivel_estudio_9` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_9`), na.rm = TRUE),
proporcion_nivel_estudio_10 = sum(`nivel_estudio_10` == 1, na.rm = TRUE) / sum(!is.na(`nivel_estudio_10`), na.rm = TRUE)
) %>% as.data.frame()
# Convertimos la columna que tiene el nombre del barrio en los rownames
rownames(db_escolaridad) <- db_escolaridad[, 1]
db_escolaridad[, 1] <- NULL
# Corrección de nombres en los barrios
rownames(db_escolaridad) <- rownames(db_escolaridad) %>%
str_replace("ANDALUCIA", "ANDALUCÍA") %>%
str_replace("Nº 2", "NO.2") %>%
str_replace("Nº 1", "NO.1") %>%
str_replace("Nº 3", "NO.3") %>%
str_replace("AREA EXPANSION", "ÁREA DE EXPANSIÓN") %>%
str_replace("EXPANCION", "EXPANSIÓN") %>%
str_replace("AREA", "ÁREA") %>%
str_replace("CRISTOBAL", "CRISTÓBAL") %>%
str_replace("BOMBONA", "BOMBONÁ") %>%
str_replace("LA ASOMADERA", "ASOMADERA") %>%
str_replace("BELALCAZAR", "BELALCÁZAR") %>%
str_replace("CALAZANS", "CALASANZ") %>%
str_replace("COLON", "COLÓN") %>%
str_replace("MIRA FLORES", "MIRAFLORES") %>%
str_replace("BARRIO FACULTAD DE MINAS", "FACULTAD DE MINAS") %>%
str_replace("CABECERA SAN ANT DE PR.", "SAN ANTONIO DE PRADO") %>%
str_replace("CARLOS E RESTREPO", "CARLOS E. RESTREPO") %>%
str_replace("URQUITA", "URQUITÁ") %>%
str_replace("LOS CERROS EL VERJEL", "LOS CERROS EL VERGEL") %>%
str_replace("CAYCEDO", "CAICEDO") %>%
str_replace("VALDES", "VALDÉS") %>%
str_replace("CERRO EL VOLADOR", "B. CERRO EL VOLADOR") %>%
str_replace("MOSCU", "MOSCÚ") %>%
str_replace("JOSELA", "JOSÉ LA") %>%
str_replace("JOSE", "JOSÉ") %>%
str_replace("EL YOLOMBO", "YOLOMBO") %>%
str_replace("PIEDRAS BLANCAS", "PIEDRAS BLANCAS - MATASANO") %>%
str_replace("BASILIA", "BRASILIA") %>%
str_replace("VILLA TINA", "VILLATINA") %>%
str_replace("LILIAM", "LILLIAM") %>%
str_replace("BOLIVAR", "BOLÍVAR") %>%
str_replace("CORREGIMIENTO PALMITAS", "PALMITAS SECTOR CENTRAL") %>%
str_replace("INES", "INÉS") %>%
str_replace("FE", "FÉ") %>%
str_replace("LUCIA", "LUCÍA") %>%
str_replace("SABIO", "SAVIO") %>%
str_replace("BERMEJAL- LOS ÁLAMOS", "BERMEJAL-LOS ÁLAMOS") %>%
str_replace("BOLÍVARIANA", "BOLIVARIANA") %>%
str_replace("EL NOGAL - LOS ALMENDROS", "EL NOGAL-LOS ALMENDROS") %>%
str_replace("JUAN XXIII - LA QUIEBRA", "JUAN XXIII LA QUIEBRA") %>%
str_replace("PROGRESO Nº 2", "EL PROGRESO") %>%
str_replace("MARIA", "MARÍA") %>%
str_replace("PLAYÓN", "PLAYON") %>%
str_replace("EL SOCORRO / LA GABRIELA", "EL SOCORRO") %>%
str_replace("FÉRRINI", "FERRINI") %>%
str_replace("LA CANDE LARIA", "LA CANDELARIA") %>%
str_replace("EL PLAYON", "PLAYÓN") %>%
str_replace("IGUANA", "IGUANÁ") %>%
str_replace("MARÍA CANO - CARAMBOLAS", "MARÍA CANO-CARAMBOLAS") %>%
str_replace("DE ABURRA", "DEL ABURRÁ") %>%
str_replace("ALTAVISTA CENTRAL", "ALTAVISTA SECTOR CENTRAL") %>%
str_replace("SECTOR CENTRAL", "CENTRO ADMINISTRATIVO") %>%
str_replace("ALTAVISTA CENTRO ADMINISTRATIVO", "ALTAVISTA SECTOR CENTRAL") %>%
str_replace("SANTA ELENA CENTRO ADMINISTRATIVO", "SANTA ELENA SECTOR CENTRAL") %>%
str_replace("PALMITAS CENTRO ADMINISTRATIVO", "PALMITAS SECTOR CENTRAL") %>%
str_replace("PROGRESO", "EL PROGRESO")
db_escolaridad <- db_escolaridad[!rownames(db_escolaridad) %in% c("DESCONOCIDO"), ]
write_excel_csv2(db_escolaridad, "databases/db_escolaridad.csv")
Es importante considerar que la variable “edad_promedio” no necesariamente hace referencia a la dimensión de escolaridad, sin embargo, se quiere realizar un contraste entre la variable “edad_promedio” y las demás variables para extraer información y hacer validaciones empíricas.
summary(db_escolaridad)
## edad_promedio proporcion_lectoescritura proporcion_escolaridad_actual
## Min. :23.00 Min. :0.6667 Min. :0.1000
## 1st Qu.:33.05 1st Qu.:0.8810 1st Qu.:0.2387
## Median :36.22 Median :0.9132 Median :0.2632
## Mean :36.93 Mean :0.9082 Mean :0.2627
## 3rd Qu.:40.83 3rd Qu.:0.9421 3rd Qu.:0.2886
## Max. :58.25 Max. :1.0000 Max. :0.5000
## estudio_ultimo_ano proporcion_instituciones_publicas
## Min. :0.00000 Min. :0.2561
## 1st Qu.:0.01581 1st Qu.:0.7306
## Median :0.02212 Median :0.8857
## Mean :0.02307 Mean :0.8159
## 3rd Qu.:0.02839 3rd Qu.:0.9438
## Max. :0.11111 Max. :1.0000
## proporcion_nivel_estudio_0 proporcion_nivel_estudio_1
## Min. :0.00000 Min. :0.00000
## 1st Qu.:0.07559 1st Qu.:0.06934
## Median :0.12000 Median :0.10727
## Mean :0.12675 Mean :0.11011
## 3rd Qu.:0.16641 3rd Qu.:0.14314
## Max. :0.45455 Max. :0.25397
## proporcion_nivel_estudio_2 proporcion_nivel_estudio_3
## Min. :0.05263 Min. :0.00000
## 1st Qu.:0.18829 1st Qu.:0.06109
## Median :0.25012 Median :0.07904
## Mean :0.23530 Mean :0.07759
## 3rd Qu.:0.28620 3rd Qu.:0.09483
## Max. :0.52381 Max. :0.25000
## proporcion_nivel_estudio_4 proporcion_nivel_estudio_5
## Min. :0.09091 Min. :0.00000
## 1st Qu.:0.21019 1st Qu.:0.03618
## Median :0.24883 Median :0.05035
## Mean :0.24438 Mean :0.04933
## 3rd Qu.:0.27896 3rd Qu.:0.06202
## Max. :0.50000 Max. :0.13333
## proporcion_nivel_estudio_6 proporcion_nivel_estudio_7
## Min. :0.00000 Min. :0.00000
## 1st Qu.:0.01613 1st Qu.:0.02310
## Median :0.03077 Median :0.05581
## Mean :0.03392 Mean :0.09825
## 3rd Qu.:0.05037 3rd Qu.:0.15127
## Max. :0.10656 Max. :0.36842
## proporcion_nivel_estudio_8 proporcion_nivel_estudio_9
## Min. :0.0000000 Min. :0.0000000
## 1st Qu.:0.0006139 1st Qu.:0.0000000
## Median :0.0044843 Median :0.0009911
## Mean :0.0165995 Mean :0.0063792
## 3rd Qu.:0.0203735 3rd Qu.:0.0066922
## Max. :0.1225364 Max. :0.0727763
## proporcion_nivel_estudio_10
## Min. :0.000000
## 1st Qu.:0.000000
## Median :0.000000
## Mean :0.001378
## 3rd Qu.:0.001115
## Max. :0.024691
db_escolaridad %>% select_if(is.numeric) %>%
apply(2, sd)
## edad_promedio proporcion_lectoescritura
## 5.422292368 0.044803481
## proporcion_escolaridad_actual estudio_ultimo_ano
## 0.046560206 0.013229021
## proporcion_instituciones_publicas proporcion_nivel_estudio_0
## 0.178895882 0.061424792
## proporcion_nivel_estudio_1 proporcion_nivel_estudio_2
## 0.050206840 0.071695543
## proporcion_nivel_estudio_3 proporcion_nivel_estudio_4
## 0.027104839 0.049277783
## proporcion_nivel_estudio_5 proporcion_nivel_estudio_6
## 0.020053459 0.021604172
## proporcion_nivel_estudio_7 proporcion_nivel_estudio_8
## 0.099169964 0.025807599
## proporcion_nivel_estudio_9 proporcion_nivel_estudio_10
## 0.011721795 0.003258946
Dada la información sobre las medias arrojada para cada variable, hay que resaltar que la proporción de personas con habilidades lecto-escritoras es alta con un 0.9082309, la cual es una cifra positiva pues muestra que en la población no hay analfabetismo crítico.
Por otro lado, las proporción de personas que estudiaron en el último año tambien es baja, pero no se debe concluir que esto es necesariamente negativo. Cabe la posibilidad que varias personas en un determinado barrio sean trabajadores y por tanto no dedican mas tiempo al estudio a partir de cierto momento de su vida.
>>>>>>> CONCLUIR NIVEL DE ESTUDIO AQUI <<<<<<<
ggpairs(data = db_escolaridad, columns = 1:ncol(db_escolaridad), mapping = aes(alpha = 0.5))
De la gráfica anterior, se debe resaltar significativamente las correlaciones entre las variables “edad_promedio” con las variables “proporcion_lectoescritura” y “proporcion_escolaridad_actual”. Note que la “edad_promedio” esta correlacionada de manera directa con la variable “proporcion_lectoescritura” y de manera inversa con la variable “proporcion_escolaridad_actual”. Esta información que se obtiene coincide con el conocimiento epírico, pues por un lado, las personas con mayor edad tienen mas probabilidad de tener como mínimo una educación primaria, obteniendo así mas habilidades lecto-escritoras, mientras que por otro lado a medida que las personas envejecen dejan de educarse y pasan a ambientes mas laborales.
Por otro lado, note que en los barrios las personas tienen tendencia a educarse en establecimientos de índole pública debido a su fácil acceso.
ggplot(data = db_escolaridad) +
geom_histogram(mapping = aes(x = proporcion_lectoescritura), binwidth = 0.002)
ggplot(data = db_escolaridad,
mapping = aes(x = proporcion_escolaridad_actual)) +
geom_histogram(binwidth = 0.002)
ggplot(data = db_escolaridad,
mapping = aes(x = estudio_ultimo_ano)) +
geom_histogram(binwidth = 0.0005)
db_escolaridad_escalado <- scale(db_escolaridad)
k_maximo <- 15
datos <- db_escolaridad_escalado
wss <- sapply(1:k_maximo,
function(k) {
kmeans(datos, k, nstart = 10, iter.max = 15 )$tot.withinss
})
plot(1:k_maximo, wss,
type="b", pch = 19, frame = FALSE,
xlab="Número de grupos [K]",
ylab="Total de suma de cuadrados intra-grupos")
agrupamiento_kmeans <- kmeans(datos, centers = 7, nstart = 10, iter.max = 15 )
cantidad_grupos <- 7
distancia <- dist(db_escolaridad_escalado)
agrupamiento <- hclust(distancia, method = "complete")
arbol_corte <- cutree(agrupamiento, k = cantidad_grupos)
split_db_escolaridad <- split(db_escolaridad, arbol_corte)
summary(split_db_escolaridad$`1`)
## edad_promedio proporcion_lectoescritura proporcion_escolaridad_actual
## Min. :23.00 Min. :0.6667 Min. :0.1961
## 1st Qu.:31.17 1st Qu.:0.8621 1st Qu.:0.2606
## Median :33.33 Median :0.8857 Median :0.2836
## Mean :32.94 Mean :0.8791 Mean :0.2848
## 3rd Qu.:34.99 3rd Qu.:0.9027 3rd Qu.:0.3026
## Max. :37.78 Max. :0.9290 Max. :0.4375
## estudio_ultimo_ano proporcion_instituciones_publicas
## Min. :0.00000 Min. :0.7856
## 1st Qu.:0.01796 1st Qu.:0.9171
## Median :0.02310 Median :0.9412
## Mean :0.02265 Mean :0.9339
## 3rd Qu.:0.02798 3rd Qu.:0.9614
## Max. :0.06250 Max. :1.0000
## proporcion_nivel_estudio_0 proporcion_nivel_estudio_1
## Min. :0.09302 Min. :0.07692
## 1st Qu.:0.13414 1st Qu.:0.11999
## Median :0.15459 Median :0.13943
## Mean :0.16411 Mean :0.14665
## 3rd Qu.:0.18569 3rd Qu.:0.16631
## Max. :0.30000 Max. :0.25397
## proporcion_nivel_estudio_2 proporcion_nivel_estudio_3
## Min. :0.1842 Min. :0.00000
## 1st Qu.:0.2677 1st Qu.:0.07759
## Median :0.2843 Median :0.08856
## Mean :0.2842 Mean :0.08752
## 3rd Qu.:0.3039 3rd Qu.:0.09925
## Max. :0.3600 Max. :0.13235
## proporcion_nivel_estudio_4 proporcion_nivel_estudio_5
## Min. :0.1200 Min. :0.00000
## 1st Qu.:0.1987 1st Qu.:0.03102
## Median :0.2295 Median :0.04175
## Mean :0.2244 Mean :0.04200
## 3rd Qu.:0.2528 3rd Qu.:0.05304
## Max. :0.3280 Max. :0.07579
## proporcion_nivel_estudio_6 proporcion_nivel_estudio_7
## Min. :0.00000 Min. :0.00000
## 1st Qu.:0.01016 1st Qu.:0.01084
## Median :0.01732 Median :0.02455
## Mean :0.01947 Mean :0.02835
## 3rd Qu.:0.02632 3rd Qu.:0.04026
## Max. :0.05738 Max. :0.16667
## proporcion_nivel_estudio_8 proporcion_nivel_estudio_9
## Min. :0.000000 Min. :0.0000000
## 1st Qu.:0.000000 1st Qu.:0.0000000
## Median :0.001361 Median :0.0000000
## Mean :0.002271 Mean :0.0008975
## 3rd Qu.:0.003512 3rd Qu.:0.0008881
## Max. :0.013568 Max. :0.0400000
## proporcion_nivel_estudio_10
## Min. :0.0000000
## 1st Qu.:0.0000000
## Median :0.0000000
## Mean :0.0001344
## 3rd Qu.:0.0000000
## Max. :0.0027972
summary(split_db_escolaridad$`6`)
## edad_promedio proporcion_lectoescritura proporcion_escolaridad_actual
## Min. :58.25 Min. :1 Min. :0.25
## 1st Qu.:58.25 1st Qu.:1 1st Qu.:0.25
## Median :58.25 Median :1 Median :0.25
## Mean :58.25 Mean :1 Mean :0.25
## 3rd Qu.:58.25 3rd Qu.:1 3rd Qu.:0.25
## Max. :58.25 Max. :1 Max. :0.25
## estudio_ultimo_ano proporcion_instituciones_publicas
## Min. :0 Min. :0.6667
## 1st Qu.:0 1st Qu.:0.6667
## Median :0 Median :0.6667
## Mean :0 Mean :0.6667
## 3rd Qu.:0 3rd Qu.:0.6667
## Max. :0 Max. :0.6667
## proporcion_nivel_estudio_0 proporcion_nivel_estudio_1
## Min. :0.25 Min. :0
## 1st Qu.:0.25 1st Qu.:0
## Median :0.25 Median :0
## Mean :0.25 Mean :0
## 3rd Qu.:0.25 3rd Qu.:0
## Max. :0.25 Max. :0
## proporcion_nivel_estudio_2 proporcion_nivel_estudio_3
## Min. :0.25 Min. :0.25
## 1st Qu.:0.25 1st Qu.:0.25
## Median :0.25 Median :0.25
## Mean :0.25 Mean :0.25
## 3rd Qu.:0.25 3rd Qu.:0.25
## Max. :0.25 Max. :0.25
## proporcion_nivel_estudio_4 proporcion_nivel_estudio_5
## Min. :0.25 Min. :0
## 1st Qu.:0.25 1st Qu.:0
## Median :0.25 Median :0
## Mean :0.25 Mean :0
## 3rd Qu.:0.25 3rd Qu.:0
## Max. :0.25 Max. :0
## proporcion_nivel_estudio_6 proporcion_nivel_estudio_7
## Min. :0 Min. :0
## 1st Qu.:0 1st Qu.:0
## Median :0 Median :0
## Mean :0 Mean :0
## 3rd Qu.:0 3rd Qu.:0
## Max. :0 Max. :0
## proporcion_nivel_estudio_8 proporcion_nivel_estudio_9
## Min. :0 Min. :0
## 1st Qu.:0 1st Qu.:0
## Median :0 Median :0
## Mean :0 Mean :0
## 3rd Qu.:0 3rd Qu.:0
## Max. :0 Max. :0
## proporcion_nivel_estudio_10
## Min. :0
## 1st Qu.:0
## Median :0
## Mean :0
## 3rd Qu.:0
## Max. :0
political <- shapefile("Barrio_Vereda/Barrio_Vereda.shp")
Encoding(political@data$NOMBRE) <- "UTF-8"
political$NOMBRE <- political$NOMBRE %>% toupper() %>% str_replace("DE MESA", "DE MESA")
leaflet(data = political) %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap) %>%
addPolygons(fill = TRUE, stroke = TRUE, weight = 2, color = "#03F",
label = as.character(political$NOMBRE),
popup = as.character(political$NOMBRE)) %>%
addLegend("bottomright", colors = "#03F", labels = "Barrios y veredas")